/*
	编写本程序时，查阅了很多数学知识，但是用到的并不多，最后取得效果也并不令人满意。
	我无论如何也想不出更简单的test了，这个test本身是足够复杂的。大概占到了一般输入运行时96％以上的时间。但是如果没有这个test，或者说，不需要这么严
	格的test,会消耗更多的时间。
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "raytracing.h"

int main()
{
	int n,m,i,j,k;
	double ** x,** xn,s[3],l[3],p[3],M;
	
	scanf("%d %d",&n,&m);
	x=malloc(n*sizeof(double*));
	xn=malloc(n*sizeof(double*));
	
	for(i=0;i<n;i++)
	{
		xn[i]=malloc(3*sizeof(double));
		x[i]=malloc(9*sizeof(double));
		for(j=0;j<9;j++)
			scanf("%lf",&x[i][j]);
		Initn(x[i],xn[i]);//产生法向量
	}
	
	for(i=0;i<m;i++)
	{
		scanf("%lf %lf %lf %lf %lf %lf",&s[0],&s[1],&s[2],&l[0],&l[1],&l[2]);
		M=99999999;	//这是无穷距离
		for(j=0;j<n;j++)
		{
			if(test(s,l,xn[j],x[j]))//如果会有交点，才要进行下面的计算
			{
				double t=dis(s,l,xn[j],x[j]);//计算距离
				if(t<M)
					M=t;//储存距离
			}	
		}
		
		if(M==99999999)
			printf("Miss\n");
		else 
		{
			point(s,l,M,p);//计算交点
			printf("%.2f %.2f %.2f\n",p[0],p[1],p[2]);	//输出
		}
		
	}
}
